package com.regexp.constant;

public class RegexpConstants {

    /**
     * TODO:规则匹配{@link com.regexp.util.RegexpUtil#validateRegExp(String, String)}
     * 只能小写字母
     */
    public static final String ONLY_LOWERCASE="^[a-z]$";

    /**
     * TODO:规则匹配{@link com.regexp.util.RegexpUtil#validateRegExp(String, String)}
     * 只能整数字或小数（有点的话保留1-4位小数）
     */
    public static final String ONLY_NUMBER="^([0-9]{1}|^[1-9]{1}\\d{1,11})(\\.\\d{1,4})?$";

    /**
     * TODO:过滤方法{@link com.regexp.util.RegexpUtil#stringFilter(String, String)}
     * 匹配所有特殊符号+去空格
     */
    public static final String SPECIAL_SYMBOLS="[`~!@#$%^&*()《》↑↓←→\\-\\s*「」\"+=|{}':;',\\\\\\\\[\\\\\\\\].<>/?~！@#￥%……&*（）——+|{}【】\\[\\]‘；：”“’。，、？\\\\s]";

    /**
     * TODO:过滤方法{@link com.regexp.util.RegexpUtil#stringFilter(String, String)}
     * 匹配所有空格
     */
    public static final String ALL_SPACE = "\\s*";

    /**
     * TODO:规则匹配{@link com.regexp.util.RegexpUtil#validateRegExp(String, String)}
     * 匹配手机号
     */
    public static final String MOBILE_PHONE="^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[1589]))\\d{8}$";

    /**
     * TODO:规则匹配{@link com.regexp.util.RegexpUtil#validateRegExp(String, String)}
     * 匹配身份证号
     */
    public static final String ID_CARD = "^\\d{6}((((((19|20)\\d{2})(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|(((19|20)\\d{2})(0[13578]|1[02])31)|((19|20)\\d{2})02(0[1-9]|1\\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\\d{3})|((((\\d{2})(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|((\\d{2})(0[13578]|1[02])31)|((\\d{2})02(0[1-9]|1\\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\\d{2}))(\\d|X|x)$";

    /**
     * TODO:规则匹配{@link com.regexp.util.RegexpUtil#validateRegExp(String, String)}
     * 匹配邮箱
     */
    public static final String EMAIL = "^[A-Za-z0-9\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";

    /**
     * TODO:规则匹配{@link com.regexp.util.RegexpUtil#validateRegExp(String, String)}
     * 匹配银行卡号
     */
    public static final String BANK_NO="^[1-9]\\d{9,29}$";

    /**
     * TODO:规则匹配{@link com.regexp.util.RegexpUtil#validateRegExp(String, String)}
     * 日期格式 yyyy-MM-dd
     * 判断是否是个真实有效的日期
     * 支持闰年判断
     */
    public static final String DATE_REAL = "^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$";


    /**
     * TODO:规则匹配{@link com.regexp.util.RegexpUtil#validateRegExp(String, String)}
     * 日期格式 yyyy-MM-dd
     * （宽泛）
     */
    public static final String DATE_NORMAL = "^\\d{1,4}(-)(1[0-2]|0?[1-9])\\1(0?[1-9]|[1-2]\\d|30|31)$";

    /**
     * TODO:规则匹配{@link com.regexp.util.RegexpUtil#validateRegExp(String, String)}
     * 日期时间格式 yyyy-MM-dd HH:mm:ss
     */
    public static final String TIME_NORMAL = "^([1-2][0-9][0-9][0-9]-[0-1]{0,1}[0-9]-[0-3]{0,1}[0-9])\\s(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d$";
}
